home *** CD-ROM | disk | FTP | other *** search
/ All for Cell Phones: Sony Ericsson / Sony-Ericsson 2004.iso / Java / DestroyNCatch / DestroyNCatch.jar / GameCanvas.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-06-21  |  7.3 KB  |  304 lines

  1. import java.io.IOException;
  2. import java.util.Random;
  3. import java.util.Vector;
  4. import javax.microedition.lcdui.Alert;
  5. import javax.microedition.lcdui.AlertType;
  6. import javax.microedition.lcdui.Canvas;
  7. import javax.microedition.lcdui.Command;
  8. import javax.microedition.lcdui.CommandListener;
  9. import javax.microedition.lcdui.Display;
  10. import javax.microedition.lcdui.Displayable;
  11. import javax.microedition.lcdui.Graphics;
  12. import javax.microedition.lcdui.Image;
  13. import javax.microedition.lcdui.List;
  14.  
  15. public class GameCanvas extends Canvas implements Runnable, CommandListener {
  16.    private Display display = null;
  17.    private List mainMenu = null;
  18.    private Command quitC = null;
  19.    private Alert endGame = null;
  20.    private final int MAX_MISSILES = 7;
  21.    private final int MAX_BALLOONS = 7;
  22.    private final int MAX_INDEX = 6;
  23.    private final int WIDTH = ((Canvas)this).getWidth();
  24.    private final int HEIGHT = ((Canvas)this).getHeight();
  25.    private final int[] balloonX = new int[]{2, 16, 30, 44, 58, 72, 87};
  26.    private final int BALLOON_DELAY = 30;
  27.    private Sprite copter = null;
  28.    private Sprite truck = null;
  29.    private AutoSprite missile = null;
  30.    private AutoSprite balloon = null;
  31.    private AutoSprite box = null;
  32.    private Image balloonImg = null;
  33.    private Image boxImg = null;
  34.    private Image missileImg = null;
  35.    private SpriteVector missileVector = null;
  36.    private SpriteVector balloonVector = null;
  37.    private SpriteVector boxVector = null;
  38.    private volatile Thread animationThread = null;
  39.    private boolean moveCopter = true;
  40.    private boolean moveTruck = false;
  41.    private int missilesFired = 0;
  42.    private int balloonLaunched = 0;
  43.    private int balloonDestroyed = 0;
  44.    private int boxCaught = 0;
  45.    private int balloonCreateDelay = 30;
  46.  
  47.    public GameCanvas(Display var1, List var2) {
  48.       this.display = var1;
  49.       this.mainMenu = var2;
  50.       this.quitC = new Command("Quit", 4, 1);
  51.       ((Displayable)this).addCommand(this.quitC);
  52.       ((Displayable)this).setCommandListener(this);
  53.       this.missileVector = new SpriteVector();
  54.       this.balloonVector = new SpriteVector();
  55.       this.boxVector = new SpriteVector();
  56.       this.copter = new Sprite(this.WIDTH, this.HEIGHT);
  57.       this.truck = new Sprite(this.WIDTH, this.HEIGHT);
  58.  
  59.       try {
  60.          this.balloonImg = Image.createImage("/balloon.png");
  61.          this.missileImg = Image.createImage("/bomb.png");
  62.          this.boxImg = Image.createImage("/box.png");
  63.       } catch (IOException var4) {
  64.          ((Throwable)var4).printStackTrace();
  65.       }
  66.  
  67.       this.initCopter();
  68.       this.initTruck();
  69.    }
  70.  
  71.    private void boxHitTruck(SpriteVector var1) {
  72.       for(int var3 = 0; var3 < ((Vector)var1).size(); ++var3) {
  73.          AutoSprite var2 = (AutoSprite)((Vector)var1).elementAt(var3);
  74.          if (var2.getY() >= this.truck.getY() + 2 && var2.getX() >= this.truck.getX() && var2.getX() <= this.truck.getX() + 11) {
  75.             ++this.boxCaught;
  76.             var2.setState(1);
  77.          }
  78.       }
  79.  
  80.    }
  81.  
  82.    public void commandAction(Command var1, Displayable var2) {
  83.       if (var1 == this.quitC) {
  84.          this.stop();
  85.          System.gc();
  86.          this.display.setCurrent(this.mainMenu);
  87.       }
  88.  
  89.    }
  90.  
  91.    private void draw(Graphics var1) {
  92.       this.balloonVector.draw(var1);
  93.       this.missileVector.draw(var1);
  94.       this.copter.draw(var1);
  95.       this.boxVector.draw(var1);
  96.       this.truck.draw(var1);
  97.    }
  98.  
  99.    private void initBalloon() {
  100.       Random var1 = new Random(System.currentTimeMillis());
  101.       Image[] var2 = new Image[1];
  102.       int[][] var3 = new int[][]{new int[1]};
  103.       int var4 = Math.abs(var1.nextInt()) % 6;
  104.       this.balloon.setX(this.balloonX[var4]);
  105.       this.balloon.setY(this.HEIGHT - 11 - 13);
  106.       this.balloon.setDy(1);
  107.       this.balloon.setAnimationDelay(10);
  108.       var2[0] = this.balloonImg;
  109.       this.balloon.setImage(var2);
  110.       this.balloon.setSequenceFrame(1, 1, var3);
  111.       this.balloon.setIndex(0, 0);
  112.    }
  113.  
  114.    private void initCopter() {
  115.       Image[] var1 = new Image[2];
  116.       int[][] var2 = new int[][]{{0, 1}};
  117.       this.copter.setX(0);
  118.       this.copter.setY(0);
  119.       this.copter.setDx(2);
  120.       this.copter.setDy(0);
  121.  
  122.       try {
  123.          var1[0] = Image.createImage("/heli_left.png");
  124.          var1[1] = Image.createImage("/heli_right.png");
  125.       } catch (IOException var4) {
  126.          ((Throwable)var4).printStackTrace();
  127.       }
  128.  
  129.       this.copter.setImage(var1);
  130.       this.copter.setSequenceFrame(1, 2, var2);
  131.       this.copter.setIndex(0, 0);
  132.    }
  133.  
  134.    private void initMissile() {
  135.       Image[] var1 = new Image[1];
  136.       int[][] var2 = new int[][]{new int[1]};
  137.       byte var3 = 0;
  138.       byte var4 = 7;
  139.       if (this.copter.getIndex() == 0) {
  140.          var3 = 5;
  141.       } else if (this.copter.getIndex() == 1) {
  142.          var3 = 8;
  143.       }
  144.  
  145.       this.missile.setX(this.copter.getX() + var3);
  146.       this.missile.setY(this.copter.getY() + var4);
  147.       this.missile.setDy(2);
  148.       this.missile.setAnimationDelay(1);
  149.       var1[0] = this.missileImg;
  150.       this.missile.setImage(var1);
  151.       this.missile.setSequenceFrame(1, 1, var2);
  152.       this.missile.setIndex(0, 0);
  153.    }
  154.  
  155.    private void initTruck() {
  156.       Image[] var1 = new Image[2];
  157.       int[][] var2 = new int[][]{{0, 1}};
  158.       this.truck.setX(0);
  159.       this.truck.setY(this.HEIGHT - 11);
  160.       this.truck.setDx(2);
  161.       this.truck.setDy(0);
  162.  
  163.       try {
  164.          var1[0] = Image.createImage("/truck_left.png");
  165.          var1[1] = Image.createImage("/truck_right.png");
  166.       } catch (IOException var4) {
  167.          ((Throwable)var4).printStackTrace();
  168.       }
  169.  
  170.       this.truck.setImage(var1);
  171.       this.truck.setSequenceFrame(1, 2, var2);
  172.       this.truck.setIndex(0, 0);
  173.    }
  174.  
  175.    public void keyPressed(int var1) {
  176.       if (((Canvas)this).getGameAction(var1) == 6) {
  177.          this.moveCopter = false;
  178.          this.moveTruck = true;
  179.       } else if (((Canvas)this).getGameAction(var1) == 1) {
  180.          this.moveTruck = false;
  181.          this.moveCopter = true;
  182.       } else if (this.moveCopter) {
  183.          this.copter.gameActionPressed(((Canvas)this).getGameAction(var1), true);
  184.       } else if (this.moveTruck) {
  185.          this.truck.gameActionPressed(((Canvas)this).getGameAction(var1), true);
  186.       }
  187.  
  188.    }
  189.  
  190.    public void keyReleased(int var1) {
  191.       this.copter.gameActionPressed(((Canvas)this).getGameAction(var1), false);
  192.       this.truck.gameActionPressed(((Canvas)this).getGameAction(var1), false);
  193.    }
  194.  
  195.    private void missileHitBalloon(SpriteVector var1, SpriteVector var2) {
  196.       for(int var5 = 0; var5 < ((Vector)var1).size(); ++var5) {
  197.          AutoSprite var3 = (AutoSprite)((Vector)var1).elementAt(var5);
  198.  
  199.          for(int var6 = 0; var6 < ((Vector)var2).size(); ++var6) {
  200.             AutoSprite var4 = (AutoSprite)((Vector)var2).elementAt(var6);
  201.             if (var3.getY() + 5 >= var4.getY() && var3.getX() + 1 >= var4.getX() && var3.getX() <= var4.getX() + 7) {
  202.                ++this.balloonDestroyed;
  203.                var3.setState(1);
  204.                var4.setState(1);
  205.                this.box = new AutoSprite(this.WIDTH, this.HEIGHT - 7, "box");
  206.                Image[] var7 = new Image[1];
  207.                int[][] var8 = new int[][]{new int[1]};
  208.                this.box.setX(var4.getX() + 2);
  209.                this.box.setY(var4.getY() + 9);
  210.                this.box.setDx(0);
  211.                this.box.setDy(2);
  212.                this.box.setAnimationDelay(1);
  213.                var7[0] = this.boxImg;
  214.                this.box.setImage(var7);
  215.                this.box.setSequenceFrame(1, 1, var8);
  216.                this.box.setIndex(0, 0);
  217.                this.boxVector.addElement(this.box);
  218.             }
  219.          }
  220.       }
  221.  
  222.    }
  223.  
  224.    public void paint(Graphics var1) {
  225.       var1.setColor(16777215);
  226.       var1.fillRect(0, 0, this.WIDTH, this.HEIGHT);
  227.       this.draw(var1);
  228.    }
  229.  
  230.    public void run() {
  231.       byte var1 = 100;
  232.       Thread var2 = Thread.currentThread();
  233.  
  234.       try {
  235.          while(var2 == this.animationThread) {
  236.             long var3 = System.currentTimeMillis();
  237.             this.tick();
  238.             ((Canvas)this).repaint();
  239.             ((Canvas)this).serviceRepaints();
  240.             long var5 = System.currentTimeMillis() - var3;
  241.             if (var5 < (long)var1) {
  242.                synchronized(this){}
  243.  
  244.                try {
  245.                   this.wait((long)var1 - var5);
  246.                } catch (Throwable var10) {
  247.                   throw var10;
  248.                }
  249.             }
  250.          }
  251.       } catch (InterruptedException var11) {
  252.       }
  253.  
  254.    }
  255.  
  256.    synchronized void start() {
  257.       this.animationThread = new Thread(this);
  258.       this.animationThread.start();
  259.    }
  260.  
  261.    synchronized void stop() {
  262.       this.animationThread = null;
  263.    }
  264.  
  265.    private void tick() {
  266.       this.copter.tick();
  267.       this.truck.tick();
  268.       if (this.copter.hasFired() && this.missilesFired != 7) {
  269.          this.missile = new AutoSprite(this.WIDTH, this.HEIGHT, "missile");
  270.          this.initMissile();
  271.          this.missileVector.addElement(this.missile);
  272.          ++this.missilesFired;
  273.       }
  274.  
  275.       this.missileVector.tick();
  276.       if (this.balloonLaunched != 7) {
  277.          if (this.balloonCreateDelay == 30) {
  278.             ++this.balloonLaunched;
  279.             this.balloon = new AutoSprite(this.WIDTH, 5, "balloon");
  280.             this.initBalloon();
  281.             this.balloonVector.addElement(this.balloon);
  282.             this.balloonCreateDelay = 0;
  283.          }
  284.  
  285.          ++this.balloonCreateDelay;
  286.       }
  287.  
  288.       this.balloonVector.tick();
  289.       this.missileHitBalloon(this.missileVector, this.balloonVector);
  290.       this.boxVector.tick();
  291.       this.boxHitTruck(this.boxVector);
  292.       if (this.balloonVector.isEmpty() && this.boxVector.isEmpty()) {
  293.          this.stop();
  294.          StringBuffer var1 = new StringBuffer("Missiles\nFired: " + Integer.toString(this.missilesFired) + '\n' + "Balloons\nLaunched: " + Integer.toString(this.balloonLaunched) + '\n' + "Balloons\nDestroyed: " + Integer.toString(this.balloonDestroyed) + '\n' + "Boxes\nCaught:" + Integer.toString(this.boxCaught));
  295.          this.endGame = new Alert("Results", var1.toString(), (Image)null, (AlertType)null);
  296.          this.endGame.setTimeout(-2);
  297.          this.display.setCurrent(this.endGame, this.mainMenu);
  298.          this.endGame = null;
  299.          Object var2 = null;
  300.       }
  301.  
  302.    }
  303. }
  304.